package main

import (
	"context"
	"errors"
	"gitee.com/kaylee595/gkaylee/kerr"
	"io"
	"os"
	"videoPlay/internal/dal"
)

func init() {
	dal.DB = dal.ConnectDB("sqlite.db")
}

func main() {
	// todo: 重新生成视频id
	//service := video.New(dal.DB)

}

func copyFile(ctx context.Context, src, dst string) error {
	srcFile, err := os.Open(src)
	if err != nil {
		return kerr.WrapTraceStack(err)
	}
	defer srcFile.Close()
	dstFile, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0700)
	if err != nil {
		return kerr.WrapTraceStack(err)
	}
	defer func() {
		if err != nil {
			// 如果Copy出错了, 删除掉文件
			_ = os.Remove(dst)
		}
	}()
	defer dstFile.Close()

	// copy
	buf := make([]byte, 50*1024*1024)
	for {
		select {
		case <-ctx.Done():
			return kerr.WrapTraceStack(ctx.Err())
		default:
		}
		var n int
		n, err = srcFile.Read(buf)
		if n > 0 {
			_, err2 := dstFile.Write(buf[:n])
			if err2 != nil {
				err = err2
				return kerr.WrapTraceStack(err)
			}
		}
		if err != nil {
			if errors.Is(err, io.EOF) {
				err = nil
				break
			}
			return kerr.WrapTraceStack(err)
		}
	}
	return nil
}
